package plugins

import (
	"ip-parser/internal/plugins/dos"
)

// DOSPluginAdapter 适配器，将 dos.DOSPlugin 转换为 plugins.Plugin
type DOSPluginAdapter struct {
	plugin *dos.DOSPlugin
}

// NewDOSPluginAdapter 创建新的 DOS 插件适配器
func NewDOSPluginAdapter(plugin *dos.DOSPlugin) *DOSPluginAdapter {
	return &DOSPluginAdapter{
		plugin: plugin,
	}
}

// Execute 实现 Plugin 接口的 Execute 方法
func (a *DOSPluginAdapter) Execute(args map[string]interface{}) error {
	return a.plugin.Execute(args)
}

// GetDescription 实现 Plugin 接口的 GetDescription 方法
func (a *DOSPluginAdapter) GetDescription() string {
	return a.plugin.GetDescription()
}

// GetRequiredParams 实现 Plugin 接口的 GetRequiredParams 方法
func (a *DOSPluginAdapter) GetRequiredParams() []PluginParamInfo {
	dosParams := a.plugin.GetRequiredParams()
	params := make([]PluginParamInfo, len(dosParams))

	for i, p := range dosParams {
		params[i] = PluginParamInfo{
			Name:        p.Name,
			Description: p.Description,
			Required:    p.Required,
			Default:     p.Default,
		}
	}

	return params
}

// NewDOSPlugin 创建新的拒绝服务攻击插件
// 这个函数封装了对重构后 dos 包的调用
func NewDOSPlugin() Plugin {
	return NewDOSPluginAdapter(dos.GetPlugin())
}
